extends Card

# 磐石心经卡牌
# 功能：回合内贷款X点能量，获得X点格挡

@export var energy_loan: int = 3  # 贷款的能量数量，可在tres文件中修改

func get_default_tooltip() -> String:
	# 使用replace方法替换所有%s占位符，避免格式化错误
	var formatted_text = tooltip_text
	formatted_text = formatted_text.replace("%s", str(energy_loan))
	return formatted_text

func get_updated_tooltip(_player_modifiers: ModifierHandler, _enemy_modifiers: ModifierHandler) -> String:
	# 动态更新提示文本，显示当前的贷款和格挡值
	# 使用split和join的方法来正确替换两个%s占位符
	var parts = tooltip_text.split("%s")
	if parts.size() >= 3:
		# 第一个%s替换为贷款能量，第二个%s替换为格挡值
		return parts[0] + str(energy_loan) + parts[1] + str(energy_loan) + parts[2]
	else:
		# 如果占位符数量不对，回退到默认方法
		var formatted_text = tooltip_text
		formatted_text = formatted_text.replace("%s", str(energy_loan))
		return formatted_text

func apply_effects(targets: Array[Node], modifiers: ModifierHandler) -> void:
	print("🗿 磐石心经卡牌被使用！")
	
	var player = null
	
	# 通过targets参数获取场景树
	if targets.size() > 0:
		var tree = targets[0].get_tree()
		player = Card.find_player(tree)
		
		if player and player.stats:
			# 记录旧的贷款值和格挡值
			var old_new_loan = player.stats.new_loan_mana
			var old_block = player.stats.block
			
			# 贷款能量：增加new_loan_mana
			player.stats.new_loan_mana += energy_loan
			print("磐石心经贷款能量: new_loan_mana %d → %d (+%d)" % [old_new_loan, player.stats.new_loan_mana, energy_loan])
			
			# 获得格挡值
			player.stats.block += energy_loan
			print("磐石心经获得格挡: block %d → %d (+%d)" % [old_block, player.stats.block, energy_loan])
			
			# 播放音效
			if sound:
				SFXPlayer.play(sound)
		else:
			print("无法获取玩家或玩家状态")
	else:
		print("没有目标，无法执行效果") 
